﻿using Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
using System;

namespace ProyectoActivos.Util
{
    public class ExcelUtils
    {

        public static void ExportarGridAExcel(DataGridView grid)
        {
            //Creamos las variables
            Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();

            Workbook xlsBook;
            Worksheet xlsSheet;

            //Añadimos el Libro al programa, y la hoja al libro
            xlsBook = xlsApp.Workbooks.Add(System.Reflection.Missing.Value);
            xlsSheet = (Worksheet)xlsBook.ActiveSheet;

          
            int contadorColumnas;

            for (contadorColumnas = 0; contadorColumnas < grid.Columns.Count; contadorColumnas++)
            {
                if (grid.Columns[contadorColumnas].Visible)
                {
                   
                    xlsSheet.Cells[1, contadorColumnas + 1] = grid.Columns[contadorColumnas].HeaderText;
                 
                }
            }

       
            //Seteamos el estilo de la primera fila
            xlsSheet.get_Range(xlsSheet.Cells[1, 1], xlsSheet.Cells[1, contadorColumnas - 1]).Font.Bold = true;
            xlsSheet.get_Range(xlsSheet.Cells[1, 1], xlsSheet.Cells[1, contadorColumnas - 1]).HorizontalAlignment = XlHAlign.xlHAlignCenter;


            int contadorFilas = 0;

            for (contadorFilas = 0; contadorFilas < grid.Rows.Count; contadorFilas++)
            {
                contadorColumnas = 0;

                for (contadorColumnas = 0; contadorColumnas < grid.Columns.Count; contadorColumnas++)
                {
                    if (grid.Columns[contadorColumnas].Visible)
                    {
                        if (grid[contadorColumnas, contadorFilas].Value != null)
                        {
                            if (grid[contadorColumnas, contadorFilas].Value.GetType() == typeof(String))
                            {
                                xlsSheet.get_Range(xlsSheet.Cells[contadorFilas + 2, contadorColumnas + 1], xlsSheet.Cells[contadorFilas + 2, contadorColumnas + 1]).NumberFormat = "@";
                            }


                        xlsSheet.Cells[contadorFilas + 2, contadorColumnas + 1] = grid[contadorColumnas, contadorFilas].Value.ToString();
                        } 
                    }
                }
            }
            xlsApp.Visible = true;
        }
         

         
    }
}
